4. 变量¶
4.1. 什么是变量¶
程序=数据结构+算法
变量就是可以重复使用的一个量,或者一个代号,我们可以把变量理解成是计算机中的一个存储单元,用来专门 存放数据,但我们需要对这个单元进行命名,这就是变量的名称,同样,变量存储的数据的类型,也被叫做变量的类型
4.2. 变量声明¶
变量在使用之前必须声明,即告诉系统开辟出内存来,并把相应内容放入对应内存。
变量声明一般有三种方式:
var_name = var_value
var1 = var2 = var3 = var_value
var1, var2, var3 = v1, v2, v3
# 定义变量gae,把18放入变量age中
age = 18
print(age)
print(18)
# 给age1, age2, age3 放入同样一个内容或值
age1 = age2 = age3 = 18
print(age1)
print(age2)
print(age3)
# 一行内给多个变量赋值
age4, age5, age6 = 12, 21, 45
print(age4)
print(age5)
print(age6)
结果如下:
18
18
18
18
18
12
21
45
Python中交换两个变量可以使用
a, b = b, a
来进行交换
4.3. 变量命名的规则¶
大小写敏感, 即同样内容,大写和小写不是一个
变量命名可以包含数字,大小写字母,下划线或者更多,但是我们不推荐除了前三种内容之外的符号
数字不可以打头
4man, 5for 是不可以的
man4, for5是可以的
一般在python中,以下划线开头的内容具有特殊含义,不建议使用
比如 _age, _name,理论可以,但强烈不推荐,包括但不限于一个下划线开头和两个连续下划线开头
大小写不一样,俗称大小写敏感
ForMan 跟 forMan不是一个变量名称
不能使用关键字, 即系统自己使用的变量或者命令
系统中定义的有特定名称的功能或者具有通用含义的单词
此条没有具体规定,常用后会了解
例如 print, help, len
4.4. 推荐命名方式¶
使用具有固定含义的英文单词或者缩写, srv=server skt=socket,一般以posix命名规则为主
驼峰命名法
名称以单词自动连接,且每个单词首字母大写
大驼峰,每个单词第一个字母均大写
在Python中给类命名使用此法
MyFirstLove, IntOne
小驼峰,类似大驼峰,但第一个字母小写
在Python中一般给普通变量或者函数命名
myFirstLove, intOne
linux系列常用的命名规范
多个单词用下划线链接
单词全部小写
my_first_love, int_one
python中,变量命名使用linux中变量习惯写法,类命名使用大驼峰
4.5. Python目前所有关键字查看方法¶
通过以下方法可以查看Python中所有的关键字
# 查看关键字的方法
import keyword #引入关键字模块
# 打印出系统全部关键字
print(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
4.6. 变量类型¶
严格意义上讲,Python只有一个类型
宽泛的讲,Python标准数据一共六种
数字类型Number
字符串类型str
列表list
元组tuple
字典 Dictionary
集合 set
None类型,也是一种特殊的类型
表示什么都没有
如果函数没有返回值,可以返回 None
用来占位置
用来解除变量绑定
# None 是一个独特的类型,表示什么都没有
a = None
print(a)
None
4.7. 变量类型的查看¶
如何判断一个变量的类型,一般有两种方式:
type: 可以直接查看任何一个变量的类型
isinstance: 判断一个变量是否是某个类型,如果被判断的类型是变量的类型的子类型,同样会返回
True
a = 5.0 + 1j
# 打印出变量a的类型
print(type(a))
#判断a是否是complex类型,此处如果complex有子类型,也会返回True
isinstance(a, complex)
上述代码得到的结果是:
<class 'complex'>
True
4.8. Number数字类型¶
数字类型没有大小限制
基本不像C语言或者Java语言那种考虑数字的长度
数字类型包括其他语言的所有数字相关类型,比如:
整数
小数/浮点数
复数
4.8.1. 整数¶
没有小数部分,表示个数的数字
包括: 自然数,0,负自然数
整数是分进制,常见进制有:
二进制
计算机常用
是计算机唯一能直接理解的数字
表示为0b开头的0,1代码
例如 0b01101, 0b10001
八进制
不常用
以0o开头的包含0-7的数字
十六进制
逢16进1
其实是每四位二进制表示一位十六进制数
包含0-9, a-f
数字上以0x开头表示
十进制
18, 89, 178
age = 18
print(18)
age = 0b10010
print(age)
age = 0o102
print(age)
age = 0xff #十六进制ff表示二进制的1111 1111
print(age)
18
18
66
255
4.8.2. 各进制数字直接的转换¶
Python提供了相应的转换函数,可以把数字转换成想要的进制,此类函数包括:
int: 转换成十进制整数
bin:转换成二进制数
oct:转换成八进制
hex:转换成十六进制
# 不同进制之间的转换
a = 100
b = 0b10010
c = 0o100
d = 0xff
print(a,b,c,d)
# 二八,十六进制转十进制
print("二转10:", int(b))
print("八转10:", int(c))
print("十六转10:", int(d))
# 转二进制
print("八转2:", bin(b))
print("十转2:", bin(a))
print("十六转2:", bin(d))
# 转八进制用oct()
# 转十六进制用hex()
打印结果如下:
100 18 64 255
二转10: 18
八转10: 64
十六转10: 255
八转2: 0b10010
十转2: 0b1100100
十六转2: 0b11111111
4.8.3. 浮点数¶
小数在计算机里称为浮点数
计算机里边表示浮点数可以有条件省略,比如以下都表示小数:
3.1415
3.: 3.0的省略
0.5
.5 : 0.5的省略
科学计数法
定义跟数学定义一致
写法是用e/E后面跟整数表示10的指数
176.23 == 1.7634e2
0.876 == 8.76e-1
height = 156.34
print(height)
shili = .2
print(shili)
shili = 1.234E3 #使用科学计数法
print(shili)
显示结果如下:
156.34
0.2
1234.0
4.8.4. 复数complex¶
定义同数学定义一致,即表示一个由实部和虚部构成的数字
虚部用j/J表示, 例如:
5+3j
3j
(3j)
a = 1 + 4J
print(a)
# 复数相加
b = a + 4j
print(b)
(1+4j)
(1+8j)
4.8.5. 布尔值¶
表示真假的值
只有两个值, True/False, 这是两个值,不需要引号,不是字符串
a = True
print(a)
b = False
print(b)
True
False
布尔值可以跟数字直接操作
此时True被看做数字1, False被看做数字0
#布尔值操作
age = 18 + True
print(age)
a = 18 * False
print(a)
输出结果如下:
19
0
在需要逻辑值的地方,我们也可以使用数字来表示
此时数字0被当做False
其余的,包括负数,被当做True
if -10:
print("负数是True")
if not 0:
print("0是False")
输出结果如下:
负数是True
0是False
4.9. 数据类型转换¶
什么是数据类型转换?
把一个数据类型转换为另一个数据类型,例如字符串转为数字
为什么需要数据类型转换?
因为不同的数据类型之间不能运算
数据类型转换的形式?
自动类型转换
强制类型转换
4.9.1. 自动类型转换¶
# 自动类型转换
# 当两个不同的值进行运算时,结果会向更高的精度进行计算
# True ==> 整型 ==> 浮点 ==> 复数
a = 123
b = True # 在和数字运算时 True转为数字1,False转为数字 0
# print(a+b)
# print(12.5+22)
# print(True+3.14)
4.9.2. 强制类型转换¶
python中的每个数据类型都有对应的方法,可以对数据类型进行转换
str() 可以把所有的其它数据类型转换为字符串类型
int() 字符串转数字类型时,如果字符串中时纯数字,可以转换
其它容器类型不能转为数字int类型
float() 浮点类型的转换和int类型一样,不过转换的结果是浮点类型
bool() 可以把其它类型转换布尔类型的True或False
总结,哪些情况转bool的结果是 False
'',0,0.0,False,[],{},(),set()
list() 列表
数字类型是 非容器类型,不能转换为列表
字符串 转换为列表时 会把字符串中的每一个字符当做列表的元素
集合 可以转换为 list列表类型
元组 可以转换为 list列表类型
字典 可以转换为 list列表类型,只保留了字典中的键
tuple() 元组
数字类型非容器类型,不能转换为元组
其它容器类型的数据进行转换时,和列表一样
set() 集合
数字类型 非容器类型,不能转换为集合
字符串,列表,元组可以转为 集合结果是无序的
字典转换为集合时,只保留了字典的键 key
dict() 字典
数字类型 非容器类型,不能转换为字典
字符串不能直接转换为 字典
列表可以转换为字典,要求是一个二级列表,并且每个二级元素只能有两个值
元组可以转换为字典,要求是一个二级元组,并且每个二级元素只能有两个值
4.9.3. Python的二进制¶
python
并没有二进制的类型,数字可以转换成二进制数字,但在python
内被当做
byte
类型或者字符串类型处理。
为了弥补二进制的处理带来的问题,python
有个单独的模块struct
用来单独处理二进制
相关的操作。